"""
此函数不是没有名字，他是有名字的，他的名字就是你给其设置的变量，比如res.
lambda 是定义匿名函数的关键字，相当于函数的def.
lambda 后面直接加形参，形参加多少都可以，只要用逗号隔开就行。
返回值在冒号之后设置，返回值和正常的函数一样, 可以是任意数据类型。
匿名函数不管多复杂.只能写一行.且逻辑结束后直接返回数据
"""

# def test(x, y):
#     return x + y

# res = lambda x, y: print(x + y)
#
# print(res(1, 2))

# 匿名函数，通过需要搭配高阶函数来使用
# 高阶函数：map/filter/reduce/sorted
# 用高阶函数去处理列表来生成新的列表时，速度是极快的

# map
# 传入一个函数，根据这个函数，来处理一个列表中的每一个元素

# lst = [1, 2, 3, 4]
#
# def test(x):
#     return x * 2
#
# # newList = list(map(test, lst))
# lst = list(map(lambda z: z * 2, lst))
# print(lst)
#
# projectUrl = "https://127.0.0.1:8001"
#
# caseList = [
#     {
#         "method": "get",
#         "url": "/auth/v1/account"  # 本项目的接口
#     },
#     {
#         "method": "post",
#         "url": "https://127.0.0.1:8000/auth/v1/account"  # 其他项目的接口
#     }
# ]
#
# print(caseList)
#
# def urlChange(obj):
#     if 'https' in obj['url']:
#         return obj
#     else:
#         obj['url'] = f"{projectUrl}{obj['url']}"
#         return obj
#
# caseList = list(map(urlChange, caseList))
# print(caseList)

# newList = []
# for obj in caseList:
#     if 'https' in obj['url']:
#         newList.append(obj)
#     else:
#         obj['url'] = f"{projectUrl}{obj['url']}"
#         newList.append(obj)
#
#

# filter
# 传入一个函数，根据这个函数来过滤列表中的元素，生成一个新的列表
# filter会根据函数的返回值来确定是否过滤，如果返回为True，则保留，False则过滤掉

lst = [1, 2, 3, 4]

# def test(x):
#     return x % 2
#
# lst = list(filter(
#     test,
#     lst
# ))

lst = list(filter(lambda x: x % 2, lst))

print(lst)